//引入模块
//app模块：控制应用的生命周期
//BrowserWindow模块：创建一个游览器窗口
const { app, BrowserWindow, Menu, Tray } = require('electron')
const template = require("./menu")
const path = require('path')
//托盘对象Tray
var appTray = null;

// 全局变量
let win
// 自定义方法，创建窗口
function zzxm_createWindow() {
    // 创建窗口，文档：【https://www.w3cschool.cn/electronmanual/electronmanual-browser-window.html】
    win = new BrowserWindow({
        width: 1400,
        height: 800,
        frame: true, //窗口无边窗
        autoHideMenuBar: true, //隐藏菜单栏
        // show: false, //窗口初始化是否展示
        show: true, //窗口初始化是否展示
        icon: 'icon.ico'
    })


    win.maximize() //窗口最大化
    win.show()  //窗口获取焦点  
    // 加载内容
    // 加载远程
    // win.loadURL("http://www.baidu.com")  
    // 加载本地
    // __dirname 加载本文件所在的文件夹路径【相对路径】
    // win.loadURL(path.join(__dirname, './index.html'))  
    // win.loadURL(path.join(__dirname, './dist/index.html'))  
    win.loadFile('./www/index.html')

    // 打开调试.
    // win.setThumbarButtons([{
    //     tooltip : '开发者工具',
    //     click : function(){
    //       // 打开开发者工具
    //       win.webContents.openDevTools();
    //     }
    //   }]);
    // win.webContents.openDevTools()

    //关闭窗口.
    win.on('closed', function () {
        win = null
    })

    // 设置菜单
    // const m = Menu.buildFromTemplate(template);
    // Menu.setApplicationMenu(m);


    trayIcon = path.join(__dirname, 'icon'); //icon是选取的目录
    appTray = new Tray(path.join(trayIcon, 'icon.ico'));//icon.ico是icon目录下的ico文件
    //设置此托盘图标的悬停提示内容
    appTray.setToolTip('我的托盘图标');
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.


// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
    // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
    // 否则绝大部分应用及其菜单栏会保持激活。
    if (process.platform !== 'darwin') {
        app.quit()
    }
})


app.on('activate', () => {
    // 在macOS上，当单击dock图标并且没有其他窗口打开时，
    // 通常在应用程序中重新创建一个窗口。
    if (win === null) {
        zzxm_createWindow()
    }
})

// 初始化应用，触发监听ready事件
// app.on('ready', zzxm_createWindow)
// 限制只可以打开一个应用, 4.x的文档
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
    app.quit()
    return;
} else {
    app.on('second-instance', (event, commandLine, workingDirectory) => {
        // 当运行第二个实例时,将会聚焦到mainWindow这个窗口
        if (win) {
            if (win.isMinimized()) win.restore()
            win.focus()
            win.show()
        }
    })
    // Electron 会在初始化后并准备
    // 创建浏览器窗口时，调用这个函数。
    // 部分 API 在 ready 事件触发后才能使用。
    app.on('ready', zzxm_createWindow);
}
